\section{Problèmes rencontrés et solutions}

Durant toute la phase de développement du logiciel, nous avons rencontré un ensemble de problèmes souvent liés à notre manque d'expérience sur ce type de projet. Nous présenterons dans les lignes qui suivent, ceux sur lesquels nous avons passé plus de temps.
 
\subsection{Problèmes de sélection des zones}
En ce qui concerne la sélection des zones, l'interface graphique doit pouvoir afficher les contours carrés laissés par les traces de la souris. Ces derniers doivent être dotés d'une couleur correspondante au type de la zone. Le problème rencontré était donc de pouvoir afficher les contours des zones déjà sélectionnées en même temps que ceux de la sélection en cours. La première solution entreprise était donc de stocker dans une structure toutes les sélections déjà effectuées. Cela permettrait de rafraîchir leur affichage à chaque fois que l'utilisateur survole avec la souris l'image du fichier \textsf{PDF} restitué.\\
Cette solution n'a pas plu au client, car il désire garder l'affichage des contours des zones sélectionnées durant toute son interaction avec l'interface graphique. De plus, le code de couleurs défini sur les contours affichés (cf. manuel de l'utilisateur), l'aiderait à savoir les types de réponses déjà définies (radios, cases à cocher, zones de textes, etc.). Pour remédier à ce problème, trois calques superposés ont été établis à l'aide de la classe \textsf{JLabel} de \textsf{JAVA}. Celle-ci permet d'afficher du texte ou une image sur une interface. Le premier calque restitue l'image du fichier \textsf{PDF} ouvert, le second affiche les contours des différentes zones déjà sélectionnées, et le troisième sert à dessiner sur l'écran la délimitation d'une zone en cours.

\subsection{Détection des cercles}
Le second problème rencontré a été la détection des quatres marqueurs qui aident à réorienter les documents légèrement inclinés, lors de la phase de numérisation. Il a été déja présenté avec la solution qui l'accompagne dans le chapitre précédent, en vue de justifier le retard accusé sur l'exécution de la tâche \textbf{calibrage} (Voir \ref{calibrage}).


\subsection{Ouverture du PDF}
La suite d'octets contenu dans un fichier au format \textsf{PDF}, peut être codé sous le format \textbf{Flate} ou \textbf{DCT}. De ce fait la bibliothèque de lecture du type de fichier en question, doit diposer d'un filtre \textbf{FlateDecode} et \textbf{DCTdecode} qui correspondent respectivement aux formats \textbf{Flate} et \textbf{DCT}. Après une batterie de tests effectuée avec la première bibliothèque \textbf{PDFRenderer} utilisée, il s'est avéré que le filtre \textbf{DCTDecode} de celui-ci avait un problème. L'image des pages de tous les fichiers utilisant le codage \textbf{DTC}, étaient mal restituée.\\
Il a fallu donc remplacer \textbf{PDFRenderer} avec \textbf{JPedal} diffusée sous licence \textsf{LGPL}. Après la substitution, l'affichage de tous les fichiers testés avec différents formats de codage, s'est correctement passé. 


 
